package cn.stylefeng.guns.sys.modular.system.service;

import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.sys.modular.system.entity.BtyPerformanceMonthCheck;
import cn.stylefeng.guns.sys.modular.system.model.params.BtyPerformanceMonthCheckParam;
import cn.stylefeng.guns.sys.modular.system.model.params.BtyPerformanceMonthInformationParam;
import cn.stylefeng.guns.sys.modular.system.model.params.BtyPerformanceMonthPermissionsParam;
import cn.stylefeng.guns.sys.modular.system.model.params.BtyPerformanceReceiveParam;
import cn.stylefeng.guns.sys.modular.system.model.result.BtyDdpageByAccountTime;
import cn.stylefeng.guns.sys.modular.system.model.result.BtyPerformanceMonthCheckResult;
import cn.stylefeng.guns.sys.modular.system.model.result.BtyPerformanceMonthInformationResult;
import cn.stylefeng.roses.core.reqres.response.ResponseData;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author wjk
 * @since 2022-02-10
 */
public interface BtyPerformanceMonthCheckService extends IService<BtyPerformanceMonthCheck> {

    /**
     * 新增
     *
     * @author wjk
     * @Date 2022-02-10
     */
    void add(BtyPerformanceMonthCheckParam param);

    /**
     * 删除
     *
     * @author wjk
     * @Date 2022-02-10
     */
    void delete(BtyPerformanceMonthCheckParam param);

    /**
     * 更新
     *
     * @author wjk
     * @Date 2022-02-10
     */
    void update(BtyPerformanceMonthCheckParam param);

    /**
     * 查询单条数据，Specification模式
     *
     * @author wjk
     * @Date 2022-02-10
     */
    BtyPerformanceMonthCheckResult findBySpec(BtyPerformanceMonthCheckParam param);

    /**
     * 查询列表，Specification模式
     *
     * @author wjk
     * @Date 2022-02-10
     */
    List<BtyPerformanceMonthCheckResult> findListBySpec(BtyPerformanceMonthCheckParam param);

    /**
     * 根据用户手机号，和店面的妖码，还有当前时间，验证当前用户是否有操作此店本月绩效的权限
     *
     * @author wjk
     * @Date 2021-02-17
     * @param permissionsParam
     * @return map
     * permissionsValid = true 则证明是有权限操作的，
     * permissionsValid = false 时给出原因
     * permissionsInfo 权限信息说明
     *
     */
    Map<String, String> BtyPerformanceMonthPermissionsValidation(BtyPerformanceMonthPermissionsParam permissionsParam);

    /**
     * 后台-当前登陆者身份判断,是否有权限进入创建绩效页面；
     * @author wjk
     * @Date 2021-09-15
     */
    Map<String, String> checkIdentity(String account);


    /**
     * 判断当前时间，是否是在做绩效的时间，若之前,则提示；若之后则查询
     * @author wjk
     * @Date 2021-02-11
     */
    Map<String, String> getPerformanceDay();

    /**
     * 5.待提交，已提交，督导(或大店长)下属店，统计店的个数信息
     * @author wjk
     * @Date 2021-02-14
     */
    Map<String, String> getShopListSumByPhone(String account, BtyPerformanceReceiveParam param);

    /**
     * 6.待提交的店，点击编辑，判断是否已经创建了该店，本月的绩效信息，若已经创建，则直接进入，返回本店上月的绩效人员信息，若未创建，则创建本店上月绩效信息
     * @author wjk
     * @Date 2021-02-14
     */
    Map<String, Object> setEmployeeListByYaoma(String account, BtyPerformanceReceiveParam param);

    /**
     * 根据妖码,月份，查询这个店的信息
     *
     * @author wjk
     * @Date 2021-02-14
     */
    BtyDdpageByAccountTime getBtyDdpageByYaomaTime(BtyPerformanceReceiveParam param);

    /**
     * 9.点击新增人员，查询相同运营经理下的店的店内的店长，店助，运营经理，督导等的职位信息
     * @author wjk
     * @Date 2021-02-15
     */
    LayuiPageInfo getBtyArchives(String account, BtyPerformanceReceiveParam param);

    /**
     * 查询分页数据，Specification模式
     *
     * @author wjk
     * @Date 2022-02-10
     */
    LayuiPageInfo findPageBySpec(BtyPerformanceMonthCheckParam param);

    /**
     * 11.点击提交上月绩效信息，判断点数相加<=总点数
     * @author wjk
     * @Date 2021-02-15
     */
    Map<String, String> submitPerformanceMonthCheck(String account, BtyPerformanceMonthInformationParam param);


    /**
     * 12.已提交，点击查看，查询店内人员的状态信息
     * @author wjk
     * @Date 2021-02-16
     */
    Map<String, Object> queryPerformanceMonthCheckById(String account, BtyPerformanceMonthInformationParam param);

    /**
     * 18 运营经理查询待审核店面详情列表，查询提交的绩效详情信息，包含最后一次的驳回原因
     *
     * @author wjk
     * @Date 2022-04-06
     */
    Map<String, Object> queryPerformanceMonthCheckAndDismissedById(String account, BtyPerformanceMonthInformationParam param);


    /**
     * 查询当前登录督导，或者大店长，门店总数，和可做绩效的门店数量
     * @param account
     * @param time
     * @return
     */
    ResponseData tddgetShopSumMonth(String account, String time);

    /**
     * 查询待提交，待审核，被驳回，已通过的门店数量及列表
     * @param account
     * @return
     */
    ResponseData tddgetShopSumState(String account, BtyPerformanceReceiveParam param);

    /**
     * 19  运营经理提交驳回，原因，列表
     * @author wjk
     * @Date 2022-04-06
     */
    boolean tyyjlsetDismissedList(String account, List<BtyPerformanceMonthInformationResult> param);

    /**
     * 20     运营经理提交总驳回原因
     * @author wjk
     * @Date 2022-04-06
     */
    boolean tyyjlSetDismissedTotal(String account, BtyPerformanceMonthInformationResult param);

    /**
     * 21  运营经理批量通过按钮
     * @author wjk
     * @Date 2022-04-06
     */
    boolean tyyjlSetStateApproved(String account, List<BtyDdpageByAccountTime> param);

    /**
     * 点击同步，同步该店，运营经理，督导的占比
     * @param account
     * @param yaoma
     * @return
     */
    ResponseData tddSynchronousYyjlAndDd(String account, String yaoma);
}
